package com.example.demo.niuke;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.stream.IntStream;

/**
 * @Author: liull
 * @Description: 输入整型数组和排序标识，对其元素按照升序或降序进行排序（一组测试用例可能会有多组数据）
 * @Date: Created in 18:10 2020/3/24
 * @Modified By:
 */
public class Main26 {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
//        while ((str = br.readLine()) != null) {
//            int n = Integer.parseInt(str);
//            String line = br.readLine();
//            String[] strings = line.split(" ");
//            int isAsc = Integer.parseInt(br.readLine());
//            int[] arr = new int[n];
//            int i = 0;
//            for (String s : strings) {
//                arr[i++] = Integer.parseInt(s);
//            }
//            sortIntegerArray(arr, isAsc);
//        }
        int arr[] = new int[80000];
        IntStream.range(0, 80000).forEach(item -> {
            arr[item] = (int) (Math.random() * 8000000 + 1);
        });
        long start = System.currentTimeMillis();
        selectSort(arr);
        System.out.println("耗时" + String.valueOf(System.currentTimeMillis() - start) + "ms");
        System.out.println(Arrays.toString(arr));
    }

    public static void sortIntegerArray(int[] pIntegerArray, int iSortFlag) {
        if (iSortFlag == 0) {
            // 升
            Arrays.sort(pIntegerArray);
            for (int i = 0; i < pIntegerArray.length; i++) {
                System.out.print(pIntegerArray[i] + " ");
            }
        } else {
            Arrays.sort(pIntegerArray);
            for (int i = pIntegerArray.length - 1; i >= 0; i--) {
                System.out.print(pIntegerArray[i] + " ");
            }
        }
    }

    /**
     * 冒泡排序 6,5,3,1,4
     *
     * @param array
     */
    //    private static void bubbleSortO(int[] array) {
    //        // 第一趟
    //        for (int i = 0; i < array.length - 1; i++) {
    //            for (int j = i + 1; j < array.length; j++) {
    //                if (array[i] > array[j]) {
    //                    int temp = array[i];
    //                    array[i] = array[j];
    //                    array[j] = temp;
    //                }
    //            }
    //        }
    //
    //    }
    //
    //    /**
    //     * 冒泡排序 6,5,3,1,4
    //     *
    //     * @param array
    //     */
    //    private static void bubbleSort1(int[] array) {
    //        // 第一趟
    //        for (int i = 0; i < array.length - 1; i++) {
    //            for (int j = i + 1; j < array.length; j++) {
    //                if (array[i] < array[j]) {
    //                    int temp = array[i];
    //                    array[i] = array[j];
    //                    array[j] = temp;
    //                }
    //            }
    //        }
    //
    //    }
    public static void bubbleSort3(int[] array) {
        // 第一趟
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }

    }

    public static void bubbleSort4(int[] array) {
        // 第一趟
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] < array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }

    }

    /**
     * 选择排序 101 34 119 1
     *1
     * @param array
     */
    public static void selectSort(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            int min = array[i];
            int minIndex = i;
            for (int j = i + 1; j < array.length; j++) {
                if (min > array[j]) {
                    min = array[j];
                    minIndex = j;
                }
            }
            // 找到最小值和最小值索引  交换
            array[i] = min;
            array[minIndex] = array[i];
        }

    }

}
